from pptx import Presentation
from pptx.util import Inches,Pt

# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    # Initialize a presentation object
    prs = Presentation()

    # Title Slide
    slide_layout = prs.slide_layouts[0]
    slide = prs.slides.add_slide(slide_layout)
    title = slide.shapes.title
    subtitle = slide.placeholders[1]
    title.text = "Java程序设计——While循环 信息化教学设计方案"
    subtitle.text = ""

    # Add section titles and content
    sections = [
        {
            "title": "一、设计思路",
            "content": [
                "1. 确定教学目标：明确学习者在完成本节课后应具备的技能和知识，包括能够理解和使用While循环语句解决实际问题。",
                "2. 学习者分析：分析学习者的背景和现状，确定学习者的起点、学习需求及可能的困难。",
                "3. 教学内容设计：基于教学目标，设计课程内容，包括理论讲解和实际案例演示。",
                "4. 教学方法和策略：结合信息化手段，设计多样化的教学方法和策略，如视频教学、在线互动、代码实践等。",
                "5. 教学资源设计：制作和收集教学所需的资源，如课件、视频、在线实验环境等。",
                "6. 评估与反馈：设计学习效果评估方案，并及时反馈和调整教学策略。",
            ]
        },
        {
            "title": "二、学习需求和学习者分析",
            "content": [
                "1. 学习者背景",
                "- 学生群体：大学二年级计算机专业学生",
                "- 现有知识：已掌握Java基本语法，如变量、数据类型、基本输入输出和简单的控制语句（如if和for循环）",
                "- 学习动机：通过学习控制结构来提高编程能力，解决实际问题",
                "2. 学习需求",
                "- 理解While循环的基本语法和使用场景",
                "- 掌握While循环在实际编程中的应用方法",
                "- 能够辨别和纠正While循环中常见的错误",
                "- 通过实际编程练习，提升编程逻辑和代码调试能力",
                "3. 学习者的困难点",
                "- 对While循环的循环条件和终止条件的理解可能存在困难",
                "- 在实际编程中容易出现死循环等问题",
                "- 对于复杂的逻辑控制，初学者容易产生畏难情绪",
            ]
        },
        {
            "title": "三、教学内容设计",
            "content": [
                "1. 理论讲解",
                "- While循环的基本语法和结构",
                "- While循环的执行流程图",
                "- While循环与其他循环结构（如for循环）的对比分析",
                "2. 案例演示",
                "- 简单的While循环实例：如计算1到100的和",
                "- 复杂的应用实例：如用户输入密码验证的过程",
                "3. 编程实践",
                "- 设计若干练习题目，逐步提升难度",
                "- 在线编程平台实时提交代码，获得即时反馈",
                "- 提供代码示例和详解，帮助学生理解错误和优化代码",
            ]
        },
        {
            "title": "四、教学方法和策略",
            "content": [
                "1. 视频教学",
                "- 制作或选取优质的While循环教学视频，直观展示循环语句的执行过程",
                "2. 在线互动",
                "- 通过线上平台（如讨论区、直播课）进行师生互动，解答学生疑问",
                "- 使用在线测验工具，随堂检测学习效果",
                "3. 代码实践",
                "- 采用在线编程环境（如CodePen、LeetCode等），学生可实时编写、运行和调试代码",
                "- 定期布置编程作业，并提供详细的作业点评",
                "4. 协作学习",
                "- 组织学生分组讨论和协作编程，培养团队合作精神和解决问题的能力",
            ]
        },
        {
            "title": "五、教学资源设计",
            "content": [
                "1. 课件",
                "- 制作PPT课件，涵盖While循环的基础知识、应用实例和习题解析",
                "2. 视频",
                "- 录制或选用优质的教学视频，直观展示While循环的运行过程",
                "3. 在线实验环境",
                "- 提供或推荐在线编程平台，便于学生进行代码实践和即时调试",
            ]
        },
        {
            "title": "六、评估与反馈",
            "content": [
                "1. 评估方案",
                "- 课堂小测：通过在线测验工具，检测学生对While循环基本知识的掌握情况",
                "- 编程作业：布置多种类型的编程题目，评估学生的实践能力",
                "- 项目展示：学生通过实际项目展示编程成果，教师给予评价和反馈",
                "2. 反馈调整",
                "- 根据学生的测验成绩和作业情况，及时调整教学策略和内容",
                "- 通过问卷调查和反馈机制，了解学生的学习体验和建议，不断优化教学方案",
            ]
        },
        {
            "title": "总结",
            "content": [
                "通过明确的教学设计思路和全面的教学方案，结合信息化手段，可以有效提升Java程序设计课程中While循环的教学效果，帮助学生掌握编程的核心技能，达到预期的学习目标。",
            ]
        }
    ]

    # Add slides for each section
    for section in sections:
        slide_layout = prs.slide_layouts[1]
        slide = prs.slides.add_slide(slide_layout)
        title = slide.shapes.title
        body = slide.shapes.placeholders[1]
        title.text = section["title"]
        content = "\n".join(section["content"])
        tf = body.text_frame
        for paragraph in section["content"]:
            p = tf.add_paragraph()
            p.text = paragraph
            p.font.size = Pt(16)

    # Save the presentation
    prs.save("E:\\Java_While_Loop_Teaching_Design.pptx")

